Thực đơn
Trao_đổi_khóa_Diffie-Hellman Chương trình C đơn giản#include <stdio.h>#include <math.h>#include <stdlib.h>#include <time.h>#include <conio.h>int prime(int num) { int i; for (i = 2; i*i <= num; ++i) if (num % i == 0) return 0; return 1;}int mod(int base, int expo, int num) { int res = 1; int i; for (i = 1; i <= expo; ++i) res = (res * base) % num; return res;}int main() { int p, g, a, b, i, j, r1, r2, k1, k2, k3; srand(time(NULL)); p: printf("\nNhập p và g: (hoặc comment dòng này để tạo giá trị ngẫu nhiên)"); scanf("%d %d", &p, &g); if (!prime(p) || !prime(g)) { printf("\nCác giá trị nhập không phải nguyên tố... Vui lòng nhập lại..."); goto p; } else { srand(time(NULL)); a = rand() % 50; b = rand() % 50; printf("\nSố tạo ngẫu nhiên: %d %d", a, b); r1 = mod(g, a, p); // g^a mod p r2 = mod(g, b, p); // g^b mod p printf("\nR1 = %d\nR2 = %d\n", r1, r2); k1 = mod(r2, a, p); // r2^a mod p k2 = mod(r1, b, p); // r1^b mod p printf("\nKhóa bí mật chung tính được bởi Alice: %d", k1); printf("\nKhóa bí mật chung tính được bởi Bob: %d", k2); k3 = mod(g, a * b, p); // g^a*b mod p printf("\nKiểm tra Khóa bí mật chung: %d", k3); // phải giống k1 và k2 }getch(); // Dừng màn hình để xem kết quả}
Thực đơn
Trao_đổi_khóa_Diffie-Hellman Chương trình C đơn giảnLiên quan
Trao đổi chất Trao đổi khóa Diffie-Hellman Trao đổi bạn tình Trao đổi oxy qua màng ngoài cơ thể Trao đổi dữ liệu điện tử Trao đổi khí Trao đổi địa nhiệt Trao đổi nhiệt Trao đổi chéo nhiễm sắc thể Trao đổiTài liệu tham khảo
WikiPedia: Trao_đổi_khóa_Diffie-Hellman http://www.cacr.math.uwaterloo.ca/hac/ http://cryptocellar.web.cern.ch/cryptocellar/cesg/... http://cryptocellar.web.cern.ch/cryptocellar/cesg/... http://code.google.com/p/sacct/ http://docs.google.com/viewer?a=v&pid=sites&srcid=... http://video.google.com/videoplay?docid=8991737124... http://www.google.com/patents?vid=4.2 http://www.google.com/patents?vid=4200770 http://www.jya.com/ellisdoc.htm http://www.rsasecurity.com/rsalabs/node.asp?id=230...